package com.wzcl.app.service;

import com.wzcl.app.dao.model.AppUser;
import com.wzcl.app.dao.model.Orders;
import com.wzcl.app.model.common.MyPage;
import com.wzcl.app.model.common.RVO;
import com.wzcl.app.model.dto.OrdersDto;

import java.util.List;


public interface OrderService extends BaseService<Orders, OrdersDto> {

    Orders addOrder(OrdersDto ordersDto);//用户添加订单

    Orders addOrderEager(OrdersDto ordersDto);//立即购买

    Orders delOrderById(Integer id);//取消订单

    void delOrder(Orders orders);//取消订单

    Integer getOrderPayStatus(String orderNumber);

    Orders updateOrder(OrdersDto ordersDto);//修改收获地址

    Orders getOrderById(Integer id);

    Orders getAndCheckByNo(String no);

    List<Orders> getOrderList(OrdersDto ordersDto);

    MyPage<Orders> getOrderPage(OrdersDto ordersDto) throws NoSuchMethodException;

    String payOrder(OrdersDto ordersDto);//拉起支付

    void changeDeliveryState(String orderNo, Integer deliveryState);//修改物流信息

    void setPayStateByOrderNo(Integer payState, String orderNo);//改变订单支付状态

    void setPayStateAndOrderStateByOrderNo(Integer payState, Integer orderState, String orderNo);//改变订单支付状态和order状态

    Orders seckillCheck(AppUser user, String commodityId, String activityId, String spec);

    Orders groupCheck(AppUser user, Integer commodityId, Integer activityId, Integer promotionId, String spec, Integer groupId);

    /**
     * 获取当前用户所有未支付订单
     * @return
     */
    RVO findAllNotPayByPayState();

    /**
     * 根据id批量删除订单
     * @return 返回执行结果
     */
    RVO deleteByIds(List<Integer> ids);

    /**
     * 根据日期、月份查询订单
     * @param ordersDto 订单对象
     * @return 返回订单分页数据
     */
    MyPage retrieveByDate(OrdersDto ordersDto);
}
